package com.ssy.lingxi.order.service.base;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.order.entity.OrderDO;
import com.ssy.lingxi.order.model.vo.basic.request.OrderRequirementVO;
import com.ssy.lingxi.order.model.vo.basic.response.OrderRequirementDetailVO;

/**
 * 订单其他要求相关接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-19
 */
public interface IBaseOrderRequirementService {
    /**
     * 检查并生成订单其他要求，调用方要保存OrderDO
     * @param order         订单
     * @param remark   订单备注
     * @param isCreate 是否新增，true-新增，false-修改
     * @return 检查结果
     */
    Wrapper<Void> checkOrderRemark(OrderDO order, String remark, boolean isCreate);

    /**
     * 检查并生成订单其他要求，调用方要保存OrderDO
     * @param order         订单
     * @param requirement 其他要求接口参数
     * @param isCreate 是否新增，true-新增，false-修改
     * @return 检查结果
     */
    Wrapper<Void> checkOrderRequirement(OrderDO order, OrderRequirementVO requirement, boolean isCreate);

    /**
     * （转单） - 检查并生成订单其他要求，调用方要保存OrderDO
     * @param order         转单后的订单
     * @param separateOrder 原订单
     * @return 操作结果
     */
    Wrapper<Void> transferOrderRequirement(OrderDO order, OrderDO separateOrder);

    /**
     * 查询订单其他要求
     * @param order 订单
     * @return 订单其他要求
     */
    OrderRequirementDetailVO getOrderRequirement(OrderDO order);
}
